const User = require('../models/user.model');
const bcrypt = require('bcryptjs');
const jwt = require('jsonwebtoken');

class AuthService {
    static async login(username, password) {
        // 查询用户
        const user = await User.findByUsername(username);

        // 验证用户是否存在且密码正确
        if (!user || !bcrypt.compareSync(password, user.t_zbfwb_user_passwd)) {
            throw new Error('Invalid credentials');
        }

        // 生成 JWT
        const payload = {
            sub: user.t_zbfwb_user_id, // 必须包含 sub 字段
            username: user.t_zbfwb_user_name, // 其他自定义字段（可选）
            iat: Math.floor(Date.now() / 1000), // 签发时间（可选）
            exp: Math.floor(Date.now() / 1000) + (60 * 60) // 过期时间（1 小时后）
        };

        const token = jwt.sign(payload, process.env.JWT_SECRET);
        return token;
    }
}

module.exports = AuthService;
